package com.egan.pet.admin.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.egan.pet.admin.constant.StatusConstant;
import com.egan.entity.dto.CategoryDTO;
import com.egan.entity.dto.ItemCatPageQueryDTO;
import com.egan.entity.po.ItemCat;
import com.egan.pet.admin.repository.mapper.ItemCatMapper;
import com.egan.pet.admin.result.PageResult;
import com.egan.pet.admin.service.IItemCatService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import jakarta.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 商品类目 服务实现类
 * </p>
 *
 * @author egan
 * @since 2024-09-10
 */
@Service
public class ItemCatServiceImpl extends ServiceImpl<ItemCatMapper, ItemCat> implements IItemCatService {

    @Resource
    private ItemCatMapper itemCatMapper;
    @Override
    public void saveCategory(CategoryDTO categoryDTO) {
        ItemCat itemCat = new ItemCat();
        BeanUtils.copyProperties(categoryDTO,itemCat);
        //将分类状态默认为禁止
        itemCat.setStatus(StatusConstant.DISABLE);
        itemCatMapper.insertCategory(itemCat);
    }

    @Override
    public void updateCategory(CategoryDTO categoryDTO) {
        ItemCat itemCat = new ItemCat();
        BeanUtils.copyProperties(categoryDTO,itemCat);
        itemCatMapper.updateCategory(itemCat);
    }

    @Override
    public void statusOrStop(Integer status, Long id) {
        ItemCat itemCat = ItemCat.builder()
                .id(id)
                .status(status)
                .build();
        itemCatMapper.updateStatus(itemCat);
    }

    @Override
    public List<ItemCat> listAll(Integer type) {
        return itemCatMapper.list(type);
    }

    @Override
    public PageResult pageQuery(ItemCatPageQueryDTO itemCatPageQueryDTO) {
        PageHelper.startPage(itemCatPageQueryDTO.getPage(),itemCatPageQueryDTO.getPageSize());
        //下一条sql进行分页，自动加入limit关键字分页
        Page<ItemCat> page = itemCatMapper.pageQuery(itemCatPageQueryDTO);
        return new PageResult(page.getTotal(), page.getResult());
    }

}
